/*
 * 文件名： MapUtil.java
 * 
 * 工程名称: bis-bank-pab
 *
 * Gopay
 *
 * 创建日期： 2017年8月14日
 *
 * Copyright(C) 2017, by www.gopay.com.cn Inc.All rights reserved.
 *
 * 原始作者: 宣广海
 *
 */
package com.gopay.bis.pab.apay.operation;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.lang.reflect.Method;
/**
 * 
 *
 * @author 宣广海
 *
 * @version 
 *
 * @since 2017年8月14日
 */
@SuppressWarnings("all")
public class MapUtil {
	private Map map = new HashMap();
	private Set keySet = map.keySet();

	public Object get(String key) {
		return map.get(key);
	}

	public void put(String key, Object value) {
		map.put(key, value);
	}

	public void sort() {
		List list = new ArrayList(map.keySet());
		this.keySet = new TreeSet(list);
	}
	public Set keySet() {
		return this.keySet;
	}
	public static void mapToBean(Object javabean, Map<String, Object> m) {
		Method[] methods = javabean.getClass().getDeclaredMethods();
		for (Method method : methods) {
			if (method.getName().startsWith("set")) {
				Class<?>[] params = method.getParameterTypes();
				String field = method.getName();
				field = field.substring(field.indexOf("set") + 3);
				field = field.toLowerCase().charAt(0) + field.substring(1);
				Object value = m.get(field.toString());
				try {
					if (value != null && !"".equals(value)) {
						String pa = params[0].getName().toString();
						if ("java.util.Date".equals(pa)) {
							value = new java.util.Date(
									((java.util.Date) value).getTime());
						} else if ("java.lang.String".equals(pa)) {
							value = new java.lang.String(value.toString());
						} else if ("java.lang.Integer".equals(pa)
								|| "int".equals(pa)) {
							value = new java.lang.Integer(value.toString());
						} else if ("java.lang.Long".equals(pa)) {
							value = new java.lang.Long(value.toString());
						} else if ("java.lang.Double".equals(pa)) {
							value = new java.lang.Double(value.toString());

						} else if ("java.lang.Float".equals(pa)) {
							value = new java.lang.Float(value.toString());

						} else if ("java.lang.Short".equals(pa)) {
							value = new java.lang.Short(value.toString());

						} else if ("java.lang.Byte".equals(pa)) {
							value = new java.lang.Byte(value.toString());

						} else if ("java.lang.Boolean".equals(pa)) {
							value = new java.lang.Boolean(value.toString());

						}
						method.invoke(javabean, value);
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}

}
